ফাইল কমপ্রেশন (File Compression) এমন একটি প্রক্রিয়া যার মাধ্যমে ফাইলের আকার কমানো হয়, যাতে এটি আরও সঞ্চয়যোগ্য এবং দ্রুত স্থানান্তরযোগ্য হয়। অ্যাপাচি কমন্স আইও (Apache Commons IO) লাইব্রেরি সরাসরি ফাইল কমপ্রেশন সমর্থন না করলেও, এটি ফাইলের সাথে কাজ করার জন্য ইউটিলিটি মেথড সরবরাহ করে। আপনি FileUtils
এবং IOUtils
এর সাহায্যে ফাইল কমপ্রেশন করতে পারবেন, তবে অ্যাপাচি কমন্স Compression
লাইব্রেরি বা জাভার স্ট্যান্ডার্ড java.util.zip
লাইব্রেরি ব্যবহার করাও উপকারী হতে পারে।
এই টিউটোরিয়ালে আমরা দেখব কিভাবে FileUtils
এবং IOUtils
ব্যবহার করে ফাইল কমপ্রেশন করতে হবে।
যদিও Apache Commons IO সরাসরি ফাইল কমপ্রেশন হ্যান্ডল করতে পারে না, তবে আপনি FileUtils
ক্লাস ব্যবহার করে ফাইলের কনটেন্ট সহজেই পড়তে এবং লেখতে পারেন, যা Java's java.util.zip
প্যাকেজের সাথে মিলে ফাইল কমপ্রেশন করতে সহায়ক।
.zip
ফাইল তৈরি করা (Java ZipStream এর সাথে)import org.apache.commons.io.FileUtils;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class FileCompressionExample {
public static void main(String[] args) {
// ইনপুট ফাইল এবং আউটপুট জিপ ফাইলের পাথ
File inputFile = new File("example.txt");
File zipFile = new File("example.zip");
try (FileInputStream fis = new FileInputStream(inputFile);
FileOutputStream fos = new FileOutputStream(zipFile);
ZipOutputStream zipOut = new ZipOutputStream(fos)) {
// জিপ এন্ট্রি তৈরি করা
ZipEntry zipEntry = new ZipEntry(inputFile.getName());
zipOut.putNextEntry(zipEntry);
// ফাইল থেকে ডেটা পড়া এবং জিপ ফাইলে লেখা
IOUtils.copy(fis, zipOut);
// জিপ ফাইলের লেখার শেষ
zipOut.closeEntry();
System.out.println("File compressed successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
.zip
ফাইল তৈরি করা হয়েছে।IOUtils.copy(fis, zipOut)
এই মেথডটি ইনপুট ফাইল থেকে ডেটা পড়ে এবং আউটপুট জিপ ফাইলে লেখে।IOUtils ক্লাসটি ইনপুট এবং আউটপুট স্ট্রিমের জন্য একটি কার্যকরী ইউটিলিটি সরবরাহ করে, যা কমপ্রেশন (Compression) এবং এক্সট্রাকশন (Extraction) কাজগুলো সহজ করে।
.gz
ফাইল কমপ্রেশন (gzip ব্যবহার)import org.apache.commons.io.IOUtils;
import java.io.*;
import java.util.zip.GZIPOutputStream;
public class GzipCompressionExample {
public static void main(String[] args) {
// ইনপুট ফাইল এবং আউটপুট GZIP ফাইলের পাথ
File inputFile = new File("example.txt");
File gzipFile = new File("example.gz");
try (FileInputStream fis = new FileInputStream(inputFile);
FileOutputStream fos = new FileOutputStream(gzipFile);
GZIPOutputStream gzipOut = new GZIPOutputStream(fos)) {
// GZIP আউটপুট স্ট্রিমে ইনপুট ফাইলের ডেটা কপি করা
IOUtils.copy(fis, gzipOut);
System.out.println("File compressed to GZIP format successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
.gz
ফাইল তৈরি করা হচ্ছে।IOUtils.copy(fis, gzipOut)
মেথডটি ইনপুট ফাইল থেকে ডেটা পড়ে এবং আউটপুট GZIP ফাইলে লেখে।GZIPOutputStream
একটি স্ট্যান্ডার্ড জাভা ক্লাস যা ফাইল কমপ্রেশন করতে সাহায্য করে, তবে Apache Commons IO's IOUtils এটিকে সহজ এবং দ্রুত করতে সাহায্য করে।যদিও Apache Commons IO সরাসরি ফাইল কমপ্রেশন সমর্থন করে না, তবে Apache Commons Compress লাইব্রেরি একটি অত্যন্ত শক্তিশালী লাইব্রেরি যা gzip, zip, tar, bzip2 ইত্যাদি ফাইল ফরম্যাটের সাথে কাজ করার জন্য অনেক উন্নত ফিচার সরবরাহ করে।
.tar.gz
ফাইল তৈরিimport org.apache.commons.compress.archivers.tar.*;
import org.apache.commons.compress.compressors.gzip.*;
import java.io.*;
public class TarGzipCompressionExample {
public static void main(String[] args) {
File inputFile = new File("example.txt");
File outputTarGzFile = new File("example.tar.gz");
try (FileOutputStream fos = new FileOutputStream(outputTarGzFile);
GzipCompressorOutputStream gzipOut = new GzipCompressorOutputStream(fos);
TarArchiveOutputStream tarOut = new TarArchiveOutputStream(gzipOut)) {
tarOut.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
// ফাইল থেকে আর্কাইভ তৈরি করা
TarArchiveEntry tarEntry = new TarArchiveEntry(inputFile, inputFile.getName());
tarOut.putArchiveEntry(tarEntry);
try (FileInputStream fis = new FileInputStream(inputFile)) {
IOUtils.copy(fis, tarOut);
}
tarOut.closeArchiveEntry();
System.out.println("File compressed to .tar.gz format successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
File Compression করার জন্য Apache Commons IO লাইব্রেরি কিছু গুরুত্বপূর্ণ ইউটিলিটি সরবরাহ করে, তবে এটি মূলত stream-based operations এবং buffering techniques ব্যবহার করে ফাইল কমপ্রেশনকে সহজ করে তোলে। IOUtils
এবং FileUtils
ক্লাস ব্যবহার করে ফাইল ডেটা সহজে gzip বা zip ফরম্যাটে কমপ্রেস করা যেতে পারে।
তবে যদি আপনি আরও উন্নত ফাইল কমপ্রেশন এবং এক্সট্রাকশন (extraction) ফিচার চান, তাহলে Apache Commons Compress লাইব্রেরি ব্যবহার করা উচিত, যা বিভিন্ন ফাইল ফরম্যাটের জন্য উন্নত সমর্থন প্রদান করে।
common.read_more